package com.clyme.expediente.servicios;

import com.clyme.expediente.dao.SedeDao;
import com.clyme.expediente.dao.UbigeoDao;
import com.clyme.expediente.daoImpl.SedeDaoImpl;
import com.clyme.expediente.daoImpl.UbigeoDaoImpl;
import com.clyme.expediente.entidad.LineaTrabajo;
import com.clyme.expediente.entidad.Sede;
import com.clyme.expediente.entidad.Ubigeo;
import com.clyme.expediente.hibernate.HibernateConexion;
import com.clyme.expediente.utilitarios.IConexion;
import com.clyme.expediente.utilitarios.Utilitario;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Luis Alonso Ballena Garcia
 */
public class SedeServicios {
    IConexion conexion;
    SedeDao<Sede> daoSede;
    UbigeoDao<Ubigeo> daoUbigeo;

    public SedeServicios() {
        conexion = new HibernateConexion();
        daoSede = new SedeDaoImpl(conexion);
        daoUbigeo = new UbigeoDaoImpl(conexion);
    }
    
    public Sede obtenerSede(Integer id)
    {
        conexion.beginConexion();
        Sede sede = daoSede.buscarPorId(Sede.class, id);
        conexion.closeConexion();
        return sede;
    }
    
    public void registrarSede(Sede sede)
    {
        sede.setHabilitado(Short.valueOf("1"));
        conexion.beginTransaccion();
        daoSede.agregar(sede);
        conexion.closeTransaccion();
        Utilitario.enviarMensajeGlobalValido("Se ha registrado correctamente");
    }
    
    public void actualizarSede(Sede sede)
    {
        conexion.beginTransaccion();
        daoSede.actualizar(sede);
        conexion.closeTransaccion();
        Utilitario.enviarMensajeGlobalValido("Se ha actualizado correctamente");
    }
    
    public void eliminarSede(Sede sede)
    {
        sede.setHabilitado(Short.valueOf("0"));
        conexion.beginTransaccion();
        daoSede.actualizar(sede);
        conexion.closeTransaccion();
        Utilitario.enviarMensajeGlobalValido("Se ha eliminado correctamente");
    }
    
    public List<Sede> buscarTodos(){
        List<Sede> sedes = new ArrayList<Sede>();
        conexion.beginConexion();
        sedes = daoSede.obtenerTodosActivos(Sede.class);
        conexion.closeConexion();
        return sedes;
    }
    
    public List<Ubigeo> obtenerUbigeos()
    {
        List<Ubigeo> ubigeos = new ArrayList<Ubigeo>();
        conexion.beginConexion();
        ubigeos = daoUbigeo.obtenerTodos(Ubigeo.class);
        conexion.closeConexion();
        return ubigeos;
    }
    
    public Ubigeo obtenerUbigeo(String codigoDep, String codigoProv, String codigoDist)
    {
        Ubigeo ubigeo = null;
        conexion.beginConexion();
        ubigeo = daoUbigeo.getUbigeo(codigoDep, codigoProv, codigoDist);
        conexion.closeConexion();
        return ubigeo;
    }
    
}
